Skip to content

✨ 新增 sctl 本地守护进程与 MCP 桥接#3

Open
CodFrm wants to merge 6 commits into
mainfrom
feat/sctl-daemon
Open

✨ 新增 sctl 本地守护进程与 MCP 桥接#3
CodFrm wants to merge 6 commits into
mainfrom
feat/sctl-daemon

Conversation

@CodFrm

@CodFrm CodFrm commented Jul 21, 2026

Copy link
Copy Markdown
Member

说明

将原 main 分支中的 sctl 守护进程实现通过 PR 重新引入;仓库 main 已重置为仅包含简单 README 的干净基线。

此 PR 替代因分支历史被重建而无法重新打开的 #2

关联开发与讨论:

主要内容

  • sctl CLI 与本机守护进程
  • WebSocket 桥接、认证、配对、授权与限流
  • MCP server 与本机控制 API
  • 协议、威胁模型、测试及 CI/发布配置

CodFrm added 6 commits July 21, 2026 10:26
Replace per-client pairing/scope/revocation with a flat model: enrollment establishes the long-term key K once, and the CLI and every MCP agent inherit it over the enrolled channel. clientId becomes an audit-only label.

- remove client store, cached MCP identity, per-client pairing/sync/revoke
- rename `sctl pair` -> `sctl connect`; control /pair-ext -> /enroll
- `sctl mcp` drops the pair subcommand; --name is now an audit label
- mcpserver exposes all tools (no scope filter)
- add an Origin whitelist (chrome-extension:// etc.) as a cheap web pre-filter; the handshake stays the real gate
- source reads are no longer CLI-exempt (source-read policy gates both)
- rewrite protocol.md / threat-model.md / architecture.md / README / AGENTS
…pair/client

Mirror the extension-side protocol change byte-for-byte: envelopeTypes becomes {session, bridge} and the flat-trust-dead pair.*/client.* types are removed. protocol.go's EnvelopeTypes field becomes a nested struct so Load() parses the new shape. protocolVersion unchanged (no wire-format change).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant